// 统一配置管理
const config = {
  // 开发环境配置
  development: {
    // 后端API配置
    api: {
      baseURL: '/api',
      timeout: 10000
    },
    // SRS服务器配置（阿里云端）
    srs: {
      host: '8.130.109.229',
      rtmpPort: 1935,
      httpPort: 8080,
      apiPort: 1985,
      // 推流配置
      rtmp: {
        baseUrl: 'rtmp://8.130.109.229:1935/live',
        streamName: 'livestream'
      },
      // WebRTC配置
      webrtc: {
        baseUrl: 'webrtc://8.130.109.229/live',
        streamName: 'livestream'
      },
      // WebRTC录制配置（用于推流录制）
      webrtcRecord: {
        baseUrl: 'webrtc://8.130.109.229/record',
        streamName: 'livestream'
      },
      // HLS配置
      hls: {
        baseUrl: 'http://8.130.109.229:8080',
        paths: ['/live', '/hls', '/streams', '/vod']
      },
      // 录制文件配置
      recording: {
        baseUrl: 'http://8.130.109.229:8080/recordings/live/livestream'
      }
    },
    // 其他服务配置
    services: {
      // 用户头像服务
      avatar: 'https://picsum.photos/id/64/40/40',
      // SLAM服务配置
      slam: {
        baseURL: 'http://8.130.109.229:8100',
        timeout: 30000
      },
      // CDN资源
      cdn: {
        tailwind: 'https://cdn.tailwindcss.com',
        fontAwesome: 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css',
        googleFonts: 'https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'
      }
    }
  },
  
  // 生产环境配置
  production: {
    // 后端API配置（使用相对路径，通过nginx代理）
    api: {
      baseURL: '/api',
      timeout: 10000
    },
    // SRS服务器配置
    srs: {
      host: '8.130.109.229',
      rtmpPort: 1935,
      httpPort: 8080,
      apiPort: 1985,
      // 推流配置
      rtmp: {
        baseUrl: 'rtmp://8.130.109.229:1935/live',
        streamName: 'livestream'
      },
      // WebRTC配置
      webrtc: {
        baseUrl: 'webrtc://8.130.109.229/live',
        streamName: 'livestream'
      },
      // WebRTC录制配置（用于推流录制）
      webrtcRecord: {
        baseUrl: 'webrtc://8.130.109.229/record',
        streamName: 'livestream'
      },
      // HLS配置
      hls: {
        baseUrl: 'http://8.130.109.229:8080',
        paths: ['/live', '/hls', '/streams', '/vod']
      },
      // 录制文件配置
      recording: {
        baseUrl: 'http://8.130.109.229:8080/recordings/live/livestream'
      }
    },
    // 其他服务配置
    services: {
      // 用户头像服务
      avatar: 'https://picsum.photos/id/64/40/40',
      // SLAM服务配置
      slam: {
        baseURL: 'http://8.130.109.229:8100',
        timeout: 30000
      },
      // CDN资源
      cdn: {
        tailwind: 'https://cdn.tailwindcss.com',
        fontAwesome: 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css',
        googleFonts: 'https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'
      }
    }
  }
}

// 获取当前环境
const getCurrentEnv = () => {
  return process.env.NODE_ENV || 'development'
}

// 获取当前配置
const getConfig = () => {
  const env = getCurrentEnv()
  return config[env] || config.development
}

// 导出配置和工具函数
export default getConfig()

// 导出工具函数
export { getConfig, getCurrentEnv }

// 导出URL构建工具
export const buildUrls = {
  // 构建API URL
  api: (path) => {
    const cfg = getConfig()
    return `${cfg.api.baseURL}${path.startsWith('/') ? path : '/' + path}`
  },
  
  // 构建SRS API URL
  srsApi: (path) => {
    const cfg = getConfig()
    return `http://${cfg.srs.host}:${cfg.srs.apiPort}${path.startsWith('/') ? path : '/' + path}`
  },
  
  // 构建RTMP URL
  rtmp: (streamName = null) => {
    const cfg = getConfig()
    const stream = streamName || cfg.srs.rtmp.streamName
    return `${cfg.srs.rtmp.baseUrl}/${stream}`
  },
  
  // 构建WebRTC URL
  webrtc: (streamName = null) => {
    const cfg = getConfig()
    const stream = streamName || cfg.srs.webrtc.streamName
    return `${cfg.srs.webrtc.baseUrl}/${stream}`
  },
  
  // 构建WebRTC录制URL（用于推流录制）
  webrtcRecord: (streamName = null) => {
    const cfg = getConfig()
    const stream = streamName || cfg.srs.webrtcRecord.streamName
    return `${cfg.srs.webrtcRecord.baseUrl}/${stream}`
  },
  
  // 构建HLS URL
  hls: (streamName, path = '') => {
    const cfg = getConfig()
    const basePath = path || '/live'
    return `${cfg.srs.hls.baseUrl}${basePath}/${streamName}.m3u8`
  },
  
  // 构建录制文件URL
  recording: (filePath) => {
    const cfg = getConfig()
    // 如果filePath已经是完整路径，直接返回
    if (filePath.startsWith('http')) {
      return filePath
    }
    // 如果是相对路径（以/开头），通过SRS服务器提供文件
    if (filePath.startsWith('/')) {
      // 确保路径包含livestream目录
      if (filePath.includes('/livestream/')) {
        return `http://${cfg.srs.host}:${cfg.srs.httpPort}${filePath}`
      } else {
        // 如果路径不包含livestream，添加它
        return `http://${cfg.srs.host}:${cfg.srs.httpPort}/recordings/live/livestream${filePath}`
      }
    }
    // 如果是文件名，构建完整的录制文件路径
    // 实际录制路径: /usr/local/srs/srs/trunk/objs/nginx/html/recordings/live/livestream
    // HTTP访问路径: http://8.136.52.147:8080/recordings/live/livestream/文件名
    return `http://${cfg.srs.host}:${cfg.srs.httpPort}/recordings/live/livestream/${filePath}`
  },
  
  // 构建录制文件API URL
  recordingApi: (path) => {
    return `http://8.130.109.229:8082${path.startsWith('/') ? path : '/' + path}`
  },
  
  // 构建FLV URL
  flv: (streamName) => {
    const cfg = getConfig()
    return `${cfg.srs.hls.baseUrl}/live/${streamName}.flv`
  },
  
  // 构建SLAM API URL
  slamApi: (path) => {
    const cfg = getConfig()
    return `${cfg.services.slam.baseURL}${path.startsWith('/') ? path : '/' + path}`
  }
}
